home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / regulator / machine.h < prev   
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.5 KB  |  123 lines

  1. /*
  2.  * machine.h -- SoC Regulator support, machine/board driver API.
  3.  *
  4.  * Copyright (C) 2007, 2008 Wolfson Microelectronics PLC.
  5.  *
  6.  * Author: Liam Girdwood <lg@opensource.wolfsonmicro.com>
  7.  *
  8.  * This program is free software; you can redistribute it and/or modify
  9.  * it under the terms of the GNU General Public License version 2 as
  10.  * published by the Free Software Foundation.
  11.  *
  12.  * Regulator Machine/Board Interface.
  13.  */
  14.  
  15. #ifndef __LINUX_REGULATOR_MACHINE_H_
  16. #define __LINUX_REGULATOR_MACHINE_H_
  17.  
  18. #include <linux/regulator/consumer.h>
  19. #include <linux/suspend.h>
  20.  
  21. struct regulator;
  22.  
  23. /*
  24.  * Regulator operation constraint flags. These flags are used to enable
  25.  * certain regulator operations and can be OR'ed together.
  26.  *
  27.  * VOLTAGE:  Regulator output voltage can be changed by software on this
  28.  *           board/machine.
  29.  * CURRENT:  Regulator output current can be changed by software on this
  30.  *           board/machine.
  31.  * MODE:     Regulator operating mode can be changed by software on this
  32.  *           board/machine.
  33.  * STATUS:   Regulator can be enabled and disabled.
  34.  * DRMS:     Dynamic Regulator Mode Switching is enabled for this regulator.
  35.  */
  36.  
  37. #define REGULATOR_CHANGE_VOLTAGE    0x1
  38. #define REGULATOR_CHANGE_CURRENT    0x2
  39. #define REGULATOR_CHANGE_MODE        0x4
  40. #define REGULATOR_CHANGE_STATUS        0x8
  41. #define REGULATOR_CHANGE_DRMS        0x10
  42.  
  43. /**
  44.  * struct regulator_state - regulator state during low power syatem states
  45.  *
  46.  * This describes a regulators state during a system wide low power state.
  47.  */
  48. struct regulator_state {
  49.     int uV;    /* suspend voltage */
  50.     unsigned int mode; /* suspend regulator operating mode */
  51.     int enabled; /* is regulator enabled in this suspend state */
  52. };
  53.  
  54. /**
  55.  * struct regulation_constraints - regulator operating constraints.
  56.  *
  57.  * This struct describes regulator and board/machine specific constraints.
  58.  */
  59. struct regulation_constraints {
  60.  
  61.     char *name;
  62.  
  63.     /* voltage output range (inclusive) - for voltage control */
  64.     int min_uV;
  65.     int max_uV;
  66.  
  67.     /* current output range (inclusive) - for current control */
  68.     int min_uA;
  69.     int max_uA;
  70.  
  71.     /* valid regulator operating modes for this machine */
  72.     unsigned int valid_modes_mask;
  73.  
  74.     /* valid operations for regulator on this machine */
  75.     unsigned int valid_ops_mask;
  76.  
  77.     /* regulator input voltage - only if supply is another regulator */
  78.     int input_uV;
  79.  
  80.     /* regulator suspend states for global PMIC STANDBY/HIBERNATE */
  81.     struct regulator_state state_disk;
  82.     struct regulator_state state_mem;
  83.     struct regulator_state state_standby;
  84.     suspend_state_t initial_state; /* suspend state to set at init */
  85.  
  86.     /* constriant flags */
  87.     unsigned always_on:1;    /* regulator never off when system is on */
  88.     unsigned boot_on:1;    /* bootloader/firmware enabled regulator */
  89.     unsigned apply_uV:1;    /* apply uV constraint iff min == max */
  90. };
  91.  
  92. /**
  93.  * struct regulator_consumer_supply - supply -> device mapping
  94.  *
  95.  * This maps a supply name to a device.
  96.  */
  97. struct regulator_consumer_supply {
  98.     struct device *dev;    /* consumer */
  99.     const char *supply;    /* consumer supply - e.g. "vcc" */
  100. };
  101.  
  102. /**
  103.  * struct regulator_init_data - regulator platform initialisation data.
  104.  *
  105.  * Initialisation constraints, our supply and consumers supplies.
  106.  */
  107. struct regulator_init_data {
  108.     struct device *supply_regulator_dev; /* or NULL for LINE */
  109.  
  110.     struct regulation_constraints constraints;
  111.  
  112.     int num_consumer_supplies;
  113.     struct regulator_consumer_supply *consumer_supplies;
  114.  
  115.     /* optional regulator machine specific init */
  116.     int (*regulator_init)(void *driver_data);
  117.     void *driver_data;    /* core does not touch this */
  118. };
  119.  
  120. int regulator_suspend_prepare(suspend_state_t state);
  121.  
  122. #endif
  123.